// src/utils/dateFormatter.js

class DateFormatter {
    // 格式化日期为指定格式
    static format(date, format = "yyyy-MM-dd HH:mm:ss") {
      if (!(date instanceof Date)) {
        date = new Date(date); // 确保输入是 Date 类型
      }
  
      const map = {
        "yyyy": date.getFullYear(),
        "yy": String(date.getFullYear()).slice(-2),
        "MM": String(date.getMonth() + 1).padStart(2, "0"),
        "dd": String(date.getDate()).padStart(2, "0"),
        "HH": String(date.getHours()).padStart(2, "0"),
        "mm": String(date.getMinutes()).padStart(2, "0"),
        "ss": String(date.getSeconds()).padStart(2, "0"),
        "SSS": String(date.getMilliseconds()).padStart(3, "0"),
      };
  
      return format.replace(/yyyy|yy|MM|dd|HH|mm|ss|SSS/g, (matched) => map[matched]);
    }
  
    // 获取当前时间的时间戳
    static getTimestamp(date) {
      if (!date) {
        date = new Date();
      }
      return date.getTime();
    }
  
    // 获取当前时间的 ISO 8601 格式
    static toISOString(date = new Date()) {
      return date.toISOString();  // 返回格式: "yyyy-MM-dd'T'HH:mm:ss.sssZ"
    }

    // 获取当前时间的 ISO 8601 格式（不带毫秒和时区）
    static toSimpleISOString(date = new Date()) {
      return DateFormatter.format(date, "yyyy-MM-ddTHH:mm:ss");
    }
  
    // 获取当前时间的简洁格式 (不带秒)
    static toDateTimeString(date = new Date()) {
      return DateFormatter.format(date, "yyyy-MM-dd HH:mm:ss");
    }
  
    // 获取当前日期的简洁格式 (不带时分秒)
    static toDateString(date = new Date()) {
      return DateFormatter.format(date, "yyyy-MM-dd");
    }
  
    // 获取当前时间的简洁时间格式 (HH:mm:ss)
    static toTimeString(date = new Date()) {
      return DateFormatter.format(date, "HH:mm:ss");
    }
  }
  
  export default DateFormatter;
  